
#ifndef SX_CUBOID_H
#define SX_CUBOID_H

#include <sxMath.h>
#include <sxGraphicsObject.h>

namespace Sx {
namespace Graphics {
namespace Objects {

class Cuboid : public GraphicsObject {
public:
	Cuboid();
	Cuboid(const Eigen::Vector3f& min, const Eigen::Vector3f& max);
	Cuboid(float minX, float minY, float minZ, float maxX, float maxY, float maxZ);
	virtual ~Cuboid();

	bool construct();
	void update(float dt);

	void setMin(const Eigen::Vector3f& min);
	void setMin(float x, float y, float z);
	void setMax(const Eigen::Vector3f& max);
	void setMax(float x, float y, float z);

	Eigen::Vector3f getCorner(bool x, bool y, bool z);

	Eigen::Vector3f getMin() const;
	Eigen::Vector3f getMax() const;
	float getMinX() const;
	float getMinY() const;
	float getMinZ() const;
	float getMaxX() const;
	float getMaxY() const;
	float getMaxZ() const;

protected:
	Eigen::Vector3f min, max;
};

}

}

}

#endif
